package com.ftg.midamall.rabbit.chapter03;

import com.rabbitmq.client.*;
/**
 * 发布/订阅模式
 *
 * 发布者：发布消息
 *
 * @author qjw
 * @version 1.0
 * @date 2023/11/30 11:03
 */

public class PublishSending01 {

    public static void main(String[] args) {
        System.out.println("我是77");
        // 1.创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        // 2.设置连接工厂的相关参数
        connectionFactory.setHost("localhost");
        connectionFactory.setPort(5672);
        connectionFactory.setVirtualHost("/");

        // 3.创建连接
        try (Connection connection = connectionFactory.newConnection()) {
            Channel channel = connection.createChannel();
            // 4.创建交换机
//            DIRECT("direct"),
//            FANOUT("fanout"),
//            TOPIC("topic"),
//            HEADERS("headers");
//           fanout:  广播模式,在广播过程当中，任何时间段都可以有接收者，但是接收者可能接到从收听开始以后的数据 队列 ：排它 ， 独享 名称是随机生成（）
//            FANOUT 广播   扇出
            channel.exchangeDeclare("logs", BuiltinExchangeType.FANOUT);

            AMQP.Queue.DeclareOk declareOk = channel.queueDeclare("", false, true, false, null);

            channel.queueBind(declareOk.getQueue(), "logs", "");


            for (int i = 0; i < 100; i++) {
                String message = "Hello RabbitMQ 可乐 " + i;
                channel.basicPublish("logs", "", null, message.getBytes());
                Thread.sleep(1000);
                System.out.println(" [x] Sent '" + message + "'");
            }

        }catch (Exception e){
            e.printStackTrace();
        }
    }

}
